package com.facade;

import java.io.Serializable;
import java.util.List;

import com.dao.EmpresaDAO;
import com.model.Empresa;

public class EmpresaFacade implements Serializable{
	private static final long serialVersionUID = 1L;
	
	private EmpresaDAO empresaDAO = new EmpresaDAO();

	public void createEmpresa(Empresa empresa) {
		empresaDAO.beginTransaction();
		empresaDAO.save(empresa);
		empresaDAO.commitAndCloseTransaction();
	}

	public void updateEmpresa(Empresa empresa) {
		empresaDAO.beginTransaction();
		Empresa persistedEmpresa = empresaDAO.find(empresa.getId());
		persistedEmpresa.setCnpj(empresa.getCnpj());
		persistedEmpresa.setConvenios(empresa.getConvenios());
		persistedEmpresa.setEmail(empresa.getEmail());
		persistedEmpresa.setEnderecoDaEmpresas(empresa.getEnderecoDaEmpresas());
		persistedEmpresa.setNomeFantasia(empresa.getNomeFantasia());
		persistedEmpresa.setRazaoSocial(empresa.getRazaoSocial());
		persistedEmpresa.setRepresentante(empresa.getRepresentante());
		persistedEmpresa.setTelefoneDaEmpresas(empresa.getTelefoneDaEmpresas());
		persistedEmpresa.setWebsite(empresa.getWebsite());
		
		empresaDAO.update(persistedEmpresa);
		empresaDAO.commitAndCloseTransaction();
	}

	public Empresa findEmpresa(int empresaId) {
		empresaDAO.beginTransaction();
		Empresa empresa = empresaDAO.find(empresaId);
		empresaDAO.closeTransaction();
		return empresa;
	}

	public List<Empresa> listAll() {
		empresaDAO.beginTransaction();
		List<Empresa> result = empresaDAO.findAll();
		empresaDAO.closeTransaction();
		return result;
	}

	public void deleteEmpresa(Empresa empresa) {
		empresaDAO.beginTransaction();
		Empresa persistedEmpresa = empresaDAO.findReferenceOnly(empresa.getId());
		empresaDAO.delete(persistedEmpresa);
		empresaDAO.commitAndCloseTransaction();
	}
}